---
id: retrievingFiles
title: ''
---

# 取回文件

出于分布式文件系统的特性考虑，我们专门介绍如何从分布式文件系统（IPFS）取回文件。

作为一个开源、开放、分布式的点对点网络，IPFS总是可以允许您取回所储存的文件。

## 通过IPFS取回文件

“通过IPFS取回文件”，是由您指在本地运行IPFS，以IPFS节点的身份直接从IPFS网络取回文件。

这样做有诸多优势，包括：

- 用户运行原生IPFS节点程序，直接与IPFS网络交换数据，数据无需经中间方或第三方转手，保证真实可靠。

- 受益于IPFS网络P2P特性，在有多副本数情况下，P2P网络传输速度更快。

- 直接经P2P网络协议传输文件，不占用数据流量。

**因此，我们强烈推荐用户直接通过IPFS网络访问和取回文件。**

## 通过HTTP取回文件

HTTP与IPFS为不同的网络协议（非互相兼容），且考虑到大多数Web浏览器无法原生支持IPFS，需要引入专用网关来处理协议的转换。此类网关称为IPFS网关（IPFS Gateway）。

IPFS网关本质上是一个提供网关服务IPFS节点。因此，您可以使用已有的第三方网关（公共网关）或架设自用网关实现协议转换，以支持HTTP访问和取回操作。

### 第三方网关（公共网关）

理论上，您可以利用任何IPFS公共网关取回文件，并且大多数是免费的。当然，不同的网关在访问速度、安全性、可用性等方面存在差异。此外，这些免费的公共网关很可能无法支持较大的文件或大流量需求。

您可以访问IPFS官方提供的[gateway checker](https://ipfs.github.io/public-gateway-checker/)查看目前提供服务的公共网关。你可以看到根据实施连接延迟排序的网关列表。

### 构建自用网关

无论网关是谁所架设，我们都建议您使用物理距离更近的网关以获得更好的性能表现。对于承载大规模商用需求的用户而言，网关的可用性、安全性、可控性是重要考虑。

自设IPFS网关，实质上仍是您运行IPFS节点程序并面向本地或授权用户提供网关服务。您的机器运行一个IPFS节点（可以是Desktop或CLI等形式）并指定localhost端口（例如 `localhost:8080`）即可构成一项最基本的**本地网关**服务。而**私有网关**在技术意义上与本地网关没有根本差别，私有网关一般是指被设置为只面向特定的访问者提供特定权限网关服务，例如，网关可以指定仅向持有权限的用户提供只读的服务，以及指定特定的域名解析方式（Domain resolution style）。

架设自用网关，即可实现通过IPFS获取（来自于外部IPFS的）文件，进而以HTTP形式向其他方（一般为内部局域网的其他终端、或被授予权限的其他访问者）提供文件的访问或取回服务。

### 网关配置

我们建议您参考来自[go-ipfs](https://github.com/ipfs/go-ipfs)（一个主流的IPFS implementation）的配置方案。网关配置文件是一个`JSON`文件，因此很容易进行配置。配置文件设置可参考: [ipfs-go config tutorial](https://github.com/ipfs/go-ipfs/blob/master/docs/config.md#gateway) 。

特别提示：在网关配置文件中，加入与该网关经常发生联系的其他网关（或IPFS节点）到您的**Peer List**中，能够有效提高访问速度。












